/*
 * Copyright (c) Huawei Technologies Co., Ltd. 2022-2023. All rights reserved.
 */

package common

import (
	"time"

	"github.com/dgrijalva/jwt-go"
)

var (
	// Captcha sesssion中的验证码的name
	SessionCaptchaName = "captcha"
	// Session中的key
	SessionUserId     = "userId"
	SessionUserName   = "userName"
	SessionRole       = "role"
	SessionPwdChanged = "passchanged"

	// 用户密码的加密
	Iter      = 5000
	KeyLength = 8
)

func init() {

}

type CommonParam struct {
	Cert       string `json:"cert"`
	SignedData string `json:"signed_data"`
	Data       string `json:"data"`
}

type Captcha struct {
	// 验证码内容
	Content string `json:"content"`
	// 验证码创建时间
	CreateDate time.Time `json:"createDate"`
	// 当前session请求验证码的次数
	RequestTimes int `json:"requestTimes"`
	// 当前验证码是否已被使用
	Used bool `json:"used"`
}

type LoginUserInfo struct {
	Id       string `json:"id"`
	Name     string `json:"name"`
	Password string `json:"password"`
	Salt     string `json:"salt"`
	// 连续登录失败次数
	FailTimes int `json:"failTimes"`
	//账号是否被锁定
	Locked bool `json:"locked"`
	// 上一次锁定时间
	LockedTime time.Time `json:"lockedTime"`
	// 角色id  这里创建的外键需要注意
	Role       string `json:"role"`
	PwdChanged bool   `json:"pwdChanged"`
	//是否已经实名认证
	Authenticated bool `json:"authenticated"`
}

type PhoneVerificationInfo struct {
	Code       string `json:"verificationCode"`
	CdTime     int64  `json:"cooldownTime"`
	ExpireTime int64  `json:"expireTime"`
	FailTimes  int    `json:"failTime"`
}

type Claims struct {
	SessionId string `json:"sessionId"`
	jwt.StandardClaims
}

// SAMLRequest请求
type SAMLRequest struct {
	SAMLRequest string `json:"SAMLRequest"`
	RelayState  string `json:"RelayState"`
	SigAlg      string `json:"SigAlg"`
	Signature   string `json:"Signature"`
	UserId      string `json:"UserId"`
	Token       string `json:"Token"`
}

// 重定向SAMLResponse请求
type SAMLResponse struct {
	SAMLResponse         string `form:"SAMLResponse"`
	RelayState           string `form:"RelayState"`
	AssertionConsumerUrl string `form:"AssertionConsumerUrl"`
}
